package com.xscd.polymorphism;
/*
* 多态的成员访问特点：
*           1.成员变量：编译看左边（父类），运行看左边（父类）
*           2.成员方法：编译看左边（父类），运行看右边（子类）
*               在编译的时候，会检查父类有没有这个方法
*                   如果没有，编译器报错
*                   如果有，运行的时候，一定会执行子类的方法逻辑
* -------------------------------------------------------------
* 多态创建对现象调用静态成员：
*               静态的成员，推荐类名进行调用
*               细节：静态的成员，可以使用对象名调用，但是字节码文件会自动将
*                       对象名改成类名调用
* */
public class PolymorphismTest2 {
    public static void main(String[] args) {
        Father f = new Son();
        System.out.println(f.num); //10 编译看左边（父类），运行看左边（父类）

        f.show(); //Son 编译看左边（父类），运行看右边（子类）
        Father.print();

        Inter i = new InterImpl();
        i.method();//method...


    }
}

interface Inter { void method();}
class InterImpl implements Inter {

    @Override
    public void method() {
        System.out.println("method... ");
    }
}

class Father {
    int num = 10;

    public void show(){
        System.out.println("father");
    }

    public static void print(){
        System.out.println("hhhh");
    }
}

class Son extends Father {
    int num = 20;

    @Override
    public void show() {
        System.out.println("Son");
    }

    public static void print(){
        System.out.println("xxxxx");
    }
}

